// 配置封装axios 请求
// 引入axios
import axios from "axios";
import { ElMessage } from "element-plus";
import { useAuthStore } from "@/stores";
import {jwtDecode} from "jwt-decode";
//引入element plus
//import { ElMessage } from "element-plus";
// 跨域请求，允许保存cookie
axios.defaults.withCredentials = true;
const instance = axios.create({
// 配置公共请求地址
// baseURL: 'http://localhost:9090/store',
baseURL: '/api',
// 配置请求时长 (当请求超过该时间,则自动中断请求)
timeout: 50000,
// 配置请求头(只针对post 请求有效)
headers: { 'Content-Type': 'application/json' }
});
// 添加一个请求拦截器
//3.请求拦截 登陆放token的地方
instance.interceptors.request.use(config => {
	const store = useAuthStore();
 if (store.$state.isAuthenticated) {
 //      // token失效的主动处理
 //      // 获取一下记录token的时间ser
 //      let start = store.user.exp
 //      // 获取一下当前时间
 //      let now = Date.now()
		 config.headers.authorization=localStorage.getItem('token')
		 console.log('config',config)
 //      // 算出时间差
 //      let hour = (now - start) / 1000 / 3600
 
 //      // 判断是否超过1小时
 //       if (hour >= 10) {
 //         // // 代表token过期
 //         // await store.dispatch('user/logout')
 //         // Message.error('token已过期,请重新登录')
 //         // router.push('/login')
 //      // return代表不往下执行，所以这个请求不会发送
 //         return
 //       }
		
    }
		return config
})
// 添加一个响应拦截器
instance.interceptors.response.use(
(res) => {
console.log("==响应结果==",res);
if (res.status === 200 || res.data.code == 200) {
return res.data
} else {
// ElMessage.error('请求失败')
}
},
(error) => {
  if (error && error.response) {
            error.data = {};
			switch (error.response.status) {
			 case 400:
				 error.message = '错误请求';
				 ElMessage.error(error.message)
				 break
			 case 401:
				 error.message = '未授权，请重新登录';
				 ElMessage.error(error.message)
				 break
			 case 403:
				 error.message = '拒绝访问';
				 ElMessage.error(error.message)
				 break
			 case 404:
				 error.message = '请求错误,未找到该资源';
				 ElMessage.error(error.message)
				 break
			 case 405:
				 error.message = '请求方法未允许';
				 ElMessage.error(error.message)
				 break
			 case 408:
				 error.message = '请求超时';
				 ElMessage.error(error.message)
				 break
			 case 500:
				 error.message = '服务器端出错';
				 ElMessage.error(error.message)
				 break
			 case 501:
				 error.message = '网络未实现';
				 ElMessage.error(error.message)
				 break
			 case 502:
				 error.message = '网络错误';
				 ElMessage.error(error.message)
				 break
			 case 503:
				 error.message = '服务不可用';
				 ElMessage.error(error.message)
				 break
			 case 504:
				 error.message = '网络超时';
				 ElMessage.error(error.message)
				 break
			 case 505:
				 error.message = 'http版本不支持该请求';
				 ElMessage.error(error.message)
				 break
			 default:
				 error.message = `连接错误${error.response.status}`;
				 ElMessage.error(error.message)
     }
        } else {
			console.log("连接到服务器失败,请联系网络管理员===错误===",error)
            ElMessage.error("连接到服务器失败,请联系网络管理员")
        }
return Promise.reject(error); //将错误消息挂到promise的失败函数上
},
)
export default instance;